#region Using

using System.Collections.ObjectModel;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;

#endregion

namespace XNgine.Services
{
    public delegate void MouseClickedHandler(Point pos, Collection<MouseButton> buttons);

    public delegate void MouseHeldHandler(Point pos, Collection<MouseButton> buttons);

    public delegate void MouseReleasedHandler(Point pos, Collection<MouseButton> buttons);

    public delegate void MouseMovedHandler(Vector2 move);

    public delegate void MouseScrolledHandler(Point pos, int ticks);

    /// <summary>
    /// An enum of buttons on the mouse, since XNA doesn't provide one
    /// </summary>
    public enum MouseButton
    {
        Left,
        Right,
        Middle,
        X1,
        X2
    } ;

    public interface IMouseDevice : IInputDevice<MouseState>
    {
        event MouseClickedHandler MouseClicked;
        event MouseHeldHandler MouseHeld;
        event MouseReleasedHandler MouseReleased;
        event MouseMovedHandler MouseMoved;
        event MouseScrolledHandler MouseScrolled;
    }
}